package cn.com.bluemoon.daps.standard.service;

import cn.com.bluemoon.daps.common.enums.StandardDataType;
import cn.com.bluemoon.daps.common.mp.IBmService;
import cn.com.bluemoon.daps.standard.entity.DapStandardDataType;
import cn.com.bluemoon.daps.common.enums.DatabaseType;

import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;

/**
 * <p>
 * 数据库字段基础类型数据表 服务类
 * </p>
 *
 * @author admin
 * @since 2020-08-07
 */
public interface DapStandardDataTypeService extends IBmService<DapStandardDataType> {

    /**
     * 根据数据库及代码类型获得数据类型
     *
     * @param dbType
     * @param codeType
     * @return
     */
    List<String> getList(Integer dbType, Integer codeType);


    /**
     * 根据数据库类型获取 codeType{@link DapStandardDataType#getCodeType()} 对应的多个dataType(code){@link DapStandardDataType#getCode()}
     *
     * @param dbType
     * @return
     */
    Map<Integer, Set<String>> getMapDataTypeByDbType(DatabaseType dbType);

    /**
     * 获取某个数据库下的标准类型的默认值
     *
     * @param dbType d
     * @param stdDataType d
     * @return 获取某个数据库下的标准类型的默认值
     */
    Optional<String> getDefaultValByDbTypeAndCodeOnCache(DatabaseType dbType, StandardDataType stdDataType);
}
